// 2210. [栈DFS后序遍历模拟function]表达式计算
// https://oj.rnd.huawei.com/problems/2210/details
//四则运算表达式可用表达式树来表达，如图所示。
//图中最右边部分是该表达式树的后序遍历
//后序遍历是指先遍历左子树，再遍历右子树，最后访问节点本身，简写 LRN
//现给你一个字符串，代表一个[后序遍历形式]的四则运算表达式，请计算出表达式的结果只输出整数部分
// 小心负数, 小心数字出栈, 后出-先出
//注：都是双目运算，不存在单目运算;
//中间计算结果范围：[-2^31, 2^31)；
//除法只需保留整数部分，比如:5/4=1, (-5)/3=-1,
// 5/(-3)=-1，无需考虑余数；无需考虑除数为0的情况，用例不存在除零。
//输入一个字符串，代表一个四则运算表达式，由若干操作数和运算符组成，之间用逗号隔开。范围[1,50000)
//注：用例保证输入合法：1）一定有计算结果； 2）操作数是合法的整数；
// 3）运算符只包含+，-，*，/四种。
//输出一个整数，表示表达式的计算结果，用例保证最终结果范围：-2,147,483,648 ~
// 2,147,483,647。 输入 9,3,5,-,2,*,+ 输出 5
#include <string.h>

#include <algorithm>
#include <functional>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
using namespace std;
//#define DEBUG
#ifdef DEBUG
#define PF(...) printf(__VA_ARGS__)
#else
#define PF(...)
#endif
class Solution {
 public:
  // 待实现函数，在此函数中填入答题代码;
  int CalcExpression(const string &expression) {
    map<char, function<int(int, int)>> mapOper{
        {'+', plus<int>()},
        {'-', minus<int>()},
        {'*', multiplies<int>()},
        {'/', divides<int>()},
    };
    char sExp[10] = {0};
    stack<int> stkNumb;
    for (int i = 0, len = 0;
         i < expression.size() &&
         sscanf(expression.substr(i).c_str(), "%[^,]s", sExp) != EOF;
         i += (len + 1)) {
      len = strlen(sExp);
      PF("[%d]%s\n", len, sExp);
      if (strcmp(sExp, "+") == 0 || strcmp(sExp, "-") == 0 ||
          strcmp(sExp, "*") == 0 || strcmp(sExp, "/") == 0) {
        int valPost = stkNumb.top();
        stkNumb.pop();  // 后
        int valPrev = stkNumb.top();
        stkNumb.pop();  // 前
        int valNew = mapOper[sExp[0]](valPrev, valPost);
        stkNumb.push(valNew);
        PF("c=%d, %d %s %d\n", valNew, valPost, sExp, valPrev);
      } else {
        int valNew = stoi(string(sExp));
        stkNumb.push(valNew);
        PF("new=%d, %s\n", valNew, sExp);
      }
    }
    int result = stkNumb.top();
    return result;
  }
};
inline string ReadLine() {
  string line;
  getline(cin, line);
  return line;
}
int main() {
  string expression = ReadLine();
  Solution solu;
  int result = solu.CalcExpression(expression);
  cout << result << endl;
  return 0;
}